Computer systems generally include a number of components that are electrically connected to one another. These components include one or more processors, memory devices, input/output (I/O) devices, and controllers for the memory and I/O devices. One or more clocks in a computer system typically provide clock inputs to the components in the system. The clock inputs are generally provided to components at constant frequencies, e.g. 2.4 MHz.
In efforts to ensure the reliability of a component, manufacturers often test components of a computer system over a range that is near the nominal operating frequency of the component. For example, a manufacturer may test a component over a range of +/−10% of an operating frequency of a component. By testing components at frequencies, manufacturers may identify components that fail at various frequency margins. Because components that fail at the frequency margins may be more likely to eventually fail at the operating frequency, a manufacturer may label such components as defective.
In actual use in a computer system, the range of frequencies where a component operates without failing may gradually narrow over time. In addition, the frequency of a clock input provided to a component by a clock may vary with temperature or other environmental factors. Under certain circumstances, the frequency of the clock input provided to a component may fall outside of an operable frequency range of the component and the component may fail. Furthermore, components can weaken over time due to latent defects. As stated earlier, these defects can be detected early through frequency margining. Computer systems typically do not include mechanisms for testing components over a range of clock input frequencies during normal operation. As a result, component failures may not be detected until they cause undesirable results such as a crash of the computer system.
Accordingly, it would be desirable to be able to predict component failures in a computer system in a ‘planned’ manner before the failures cause undesirable results during operation of the system.